<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 严格模式： 语法比普通js环境更严格的一种模式
        // 1，如何开启严格模式 ；"use strict"
        "use strict"
        // 2.严格模式和普通模式区别 
        // function fn(){
        //     var  a = 10;
        // }
        // fn();
        // console.log(a);
        // 必须声明之后才能使用变量 
        // a = 10;
        // console.log(a);

        // 相同的形参 
        // 普通模式会覆盖,严格模式会报错

        // function fn(a,a){
        //     console.log(a);
        // }

        // fn(10,20);


        // this的指向问题 
        // 不要关注this的定义，一定要关注this的调用
        // function fn(){
        //     console.log(this);
        // }
        // fn();//undefined


        // console.log(this);
        // var obj = {
        //     name:"张安",
        //     fn:function(){
        //         console.log(this);
        //     }
        // }

        // obj.fn();
        // var fn = obj.fn;
        // fn();

        // 事件 里的this
        // 事件源 
        // document.onclick = function(){
        //     // console.log(this);
        //     // var that = this;
        //     // setTimeout(function(){
        //     //     console.log(this);
        //     //     console.log(that);
        //     // }, 1000);
        //     var arr = [1,2,3];
        //     arr.forEach(function(item){
        //         console.log(this);//普通模式window,严格模式undefined
        //         console.log(item);
        //     })
        // }


        // call apply bind
        // function Person(){
        //     this.name = "张安";
        //     console.log(this);
        // }

        // var zhangsan = new Person();

        // 严格模式 ：1.后期编译之后的代码自动加上 严格模式 2.前端模块化的时候会自动是一个严格模式




    </script>
</body>
</html>